/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import controller.Conexao;
import controller.Estoque;
import controller.Produto;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

/**
 *
 * @author Alcivando
 */
public class EstoqueDAO {

    Estoque estoque = new Estoque();
    private Connection connection;
    private Conexao conexao;

    public EstoqueDAO() throws SQLException {
        this.connection = conexao.getConnection();
    }

    public void adicionaQtdProduto(Estoque e) throws SQLException {

        try {
            String sql = "update estoque set quantidade = quantidade + ?, \"dataEntrada\" = ? where \"codProduto\" = ?;";
            PreparedStatement stmt = connection.prepareStatement(sql);

            stmt.setInt(1, e.getQuantidade());
            stmt.setString(2, e.getDataEntrada());
            stmt.setInt(3, e.getCodProduto());

            stmt.execute();

            stmt.close();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage(), "Erro", 0);
        }
    }

    public void removerQtdProduto(Estoque e) throws SQLException {

        try {
            String sql = "update estoque set quantidade = quantidade - ?, \"dataEntrada\" = ? where \"codProduto\" = ?;";
            PreparedStatement stmt = connection.prepareStatement(sql);

            stmt.setInt(1, e.getQuantidade());
            stmt.setString(2, e.getDataEntrada());
            stmt.setInt(3, e.getCodProduto());

            stmt.execute();

            stmt.close();
            
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro: " + ex.getMessage(), "Erro", 0);
        }

    }

    public boolean verificarAlertaProduto(Produto p) {

        PreparedStatement comando;

        try {

            String sql = "SELECT sum(quantidade) FROM estoque WHERE \"codProduto\" = ?";
            comando = connection.prepareStatement(sql);
            comando.setInt(1, p.getCodProduto());
            ResultSet rs = comando.executeQuery(); //associado as operações de insert,delete,update.

            while (rs.next()) {
                int qtd = rs.getInt("sum");
                if (qtd <= p.getEstoqueMin()) {
                    return true;
                }
            }
            comando.close();
            return false;
        } catch (Exception sqle) {
            return false;
        }
    }

    public int retornaQtdProduto(Produto p) throws SQLException {


        String sql = "select quantidade from estoque where \"codProduto\" = ?;";
        PreparedStatement stmt = connection.prepareStatement(sql);

        stmt.setInt(1, p.getCodProduto());

        ResultSet rs = stmt.executeQuery();

        int qtd = 0;

        while (rs.next()) {
            qtd = rs.getInt("quantidade");
        }
        return qtd;
    }

    public void adicionaProdutoEmEstoque(Produto p) throws SQLException {
        String sql = "insert into estoque(\"codProduto\") values(?);";
        PreparedStatement stmt = connection.prepareStatement(sql);

        stmt.setInt(1, p.getCodProduto());

        stmt.execute();

        stmt.close();
    }
}
